#!/usr/bin/env python3
"""
简单的MongoDB连接测试脚本
用于验证数据库连接是否正常工作
"""

import asyncio
import sys
import os

# 添加项目根目录到Python路径
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

from database.connection_manager import MongoConnectionManager

async def quick_test():
    """快速测试MongoDB连接"""
    print("正在测试MongoDB连接...")
    print("-" * 40)
    
    # 创建连接管理器
    manager = MongoConnectionManager(
        host="localhost",
        port=27017,
        database_name="site_evaluation"
    )
    
    try:
        # 尝试连接
        print("1. 连接MongoDB...")
        connected = await manager.connect()
        
        if connected:
            print("   ✅ 连接成功!")
            
            # 获取服务器信息
            status = await manager.get_connection_status()
            print(f"   MongoDB版本: {status.get('server_version', '未知')}")
            print(f"   数据库: {status['database']}")
            
            # 测试创建索引
            print("2. 创建索引...")
            indexes_ok = await manager.create_indexes()
            if indexes_ok:
                print("   ✅ 索引创建成功!")
            else:
                print("   ⚠️  索引创建失败")
            
            # 测试集合操作
            print("3. 测试基本操作...")
            async with manager.get_collection("test") as collection:
                # 插入测试文档
                test_doc = {"message": "Hello MongoDB!", "test": True}
                result = await collection.insert_one(test_doc)
                print(f"   插入文档ID: {result.inserted_id}")
                
                # 查询文档
                found = await collection.find_one({"_id": result.inserted_id})
                if found:
                    print("   ✅ 查询测试成功!")
                
                # 删除测试文档
                await collection.delete_one({"_id": result.inserted_id})
                print("   ✅ 清理测试数据完成")
            
            print("\n🎉 所有测试通过! MongoDB连接管理器工作正常")
            
        else:
            print("   ❌ 连接失败!")
            print("   请检查:")
            print("   - MongoDB是否在localhost:27017运行")
            print("   - 防火墙设置")
            print("   - MongoDB服务状态")
            return False
            
    except Exception as e:
        print(f"   ❌ 测试失败: {e}")
        return False
    finally:
        await manager.disconnect()
        print("4. 连接已关闭")
    
    return True

def main():
    """主函数"""
    print("MongoDB连接管理器测试")
    print("=" * 40)
    
    try:
        success = asyncio.run(quick_test())
        if success:
            sys.exit(0)
        else:
            sys.exit(1)
    except KeyboardInterrupt:
        print("\n测试被用户中断")
        sys.exit(1)
    except Exception as e:
        print(f"\n测试运行出错: {e}")
        sys.exit(1)

if __name__ == "__main__":
    main() 